import pandas as pd
import numpy as np
import plotly.graph_objects as go
from plotly.offline import plot
import matplotlib.pyplot as plt
import datetime
from pycoingecko import CoinGeckoAPI
from mplfinance.original_flavor import candlestick2_ohlc
#!pip install pycoingecko
#!pip install plotly
#!pip install mplfinance
cg = CoinGeckoAPI()
bitcoin_data = cg.get_coin_market_chart_by_id(id='bitcoin', vs_currency='usd', days=3600)
bitcoin_price_data = bitcoin_data['prices']
bitcoin_price_data[0:5]
[[1367107200000, 135.3], [1367193600000, 141.96], [1367280000000, 135.3], [1367366400000, 117.0], [1367452800000, 103.43]]
data = pd.DataFrame(bitcoin_price_data, columns=['TimeStamp', 'Price'])
data.shape
(3348, 2)
data['date'] = data['TimeStamp'].apply(lambda d: datetime.date.fromtimestamp(d/1000.0))
data
| TimeStamp | Price | date | |
|---|---|---|---|
| 0 | 1367107200000 | 135.300000 | 2013-04-27 |
| 1 | 1367193600000 | 141.960000 | 2013-04-28 |
| 2 | 1367280000000 | 135.300000 | 2013-04-29 |
| 3 | 1367366400000 | 117.000000 | 2013-04-30 |
| 4 | 1367452800000 | 103.430000 | 2013-05-01 |
| ... | ... | ... | ... |
| 3343 | 1656115200000 | 21262.713483 | 2022-06-24 |
| 3344 | 1656201600000 | 21525.880362 | 2022-06-25 |
| 3345 | 1656288000000 | 21052.805398 | 2022-06-26 |
| 3346 | 1656374400000 | 20751.477531 | 2022-06-27 |
| 3347 | 1656459545000 | 20272.787705 | 2022-06-28 |
3348 rows × 3 columns
candlestick_data = data.groupby(data.date, as_index=False).agg({"Price": ['min', 'max', 'first', 'last']})
candlestick_data.to_csv('Bitcion_Price.csv')
fig = go.Figure(data=[go.Candlestick(x=candlestick_data['date'],
open=candlestick_data['Price']['first'],
high=candlestick_data['Price']['max'],
low=candlestick_data['Price']['min'],
close=candlestick_data['Price']['last'])
])
fig.update_layout(xaxis_rangeslider_visible=False)
fig.show()